package com.tensquare.gateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;


/**
 * ------------------------------
 * 功能：
 * 作者：WF
 * 微信：hbxfwf13590332912
 * 创建时间：2021/8/28-15:17
 * ------------------------------
 */
//@Configuration
public class MyCorsConfig {

    //普通的微服务（非网关）一般使用的是servlet这种阻塞式的开发模式，使用如下这种方式：
    // @Override
    // public void addCorsMappings(CorsRegistry registry) {
    //     registry.addMapping("/**")
    //             .allowedOriginPatterns("*")
    //             .allowedMethods("*")
    //             .allowCredentials(true);
    // }

    //网关层的跨域处理方式（响应式开发：gateway网关使用的是非阻塞的响应式开发，如果用zuul网关则用上面的方式）
    @Bean
    public CorsWebFilter corsWebFilter(){

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedOriginPattern("*");
        config.addAllowedMethod("*");
        config.addAllowedHeader("*");
        config.setAllowCredentials(true);
        source.registerCorsConfiguration("/**",config);
        CorsWebFilter webFilter = new CorsWebFilter(source);
        return webFilter;
    }

}
